package com.study.hospital_3.service;

import com.study.hospital_3.mapper.PatientMapper;
import com.study.hospital_3.pojo.Patient;
import com.study.hospital_3.vo.PatientUpdateVO;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
@Service
public class PatientService {
    @Resource
    private PatientMapper patientMapper;

    public  Map<String, Object> insert(PatientUpdateVO patientUpdateVO) {
        Map<String, Object> map = new HashMap<>();
        patientMapper.insert(patientUpdateVO);
        map.put("code", 200);
        map.put("msg", "插入成功");
        map.put("data", patientUpdateVO);
        return map;
    }

    public Map<String, Object> getPatients(Patient patient) {
        Map<String, Object> map = new HashMap<>();
        map.put("code", 0);
        map.put("msg", "");
        /* 注意，如果需要实现这里ifelse的功能需另外再写一个不要limit的搜索专用查询返回count */
        /* 分页功能的基于传递limit和page参数限制数据查询返回数量实现，但需要将真实的数据总数赋给count */
        // 对于分页功能的实现，在没有使用搜索的情况下，返回的数据项个数为全表
//        if (patient.getPatientName() == null && patient.getSex() == null)
            map.put("count", patientMapper.getCount());
        // 使用搜索的情况下，返回的数据项个数为搜索后返回的匹配数据项
//        else
//            map.put("count", patientMapper.getPatients(patient).size());
        map.put("data", patientMapper.getPatients(patient));
        return map;
    }

    public Map<String, Object> deleteById(Integer id) {
        Map<String, Object> map = new HashMap<>();
        patientMapper.deleteById(id);
        map.put("code", 200);
        map.put("msg", "删除成功");
        return map;
    }

    public Map<String, Object> updateById(PatientUpdateVO patientUpdateVO) {
        Map<String, Object> map = new HashMap<>();
        patientMapper.updateById(patientUpdateVO);
        map.put("code", 200);
        map.put("msg", "更新成功");
        map.put("data", patientUpdateVO);
        return map;
    }
}
